package com.bwie.common.utils;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.util.Assert;

/**
 * 密码加密工具类（BCrypt 算法）
 */
public class PasswordEncryptUtil {

    // BCrypt 加密器（单例，避免重复创建）
    private static final BCryptPasswordEncoder PASSWORD_ENCODER = new BCryptPasswordEncoder();

    /**
     * 加密明文密码（注册时用）
     * @param rawPassword 明文密码（前端传入）
     * @return 加密后的密码（存储到数据库）
     */
    public static String encrypt(String rawPassword) {
        Assert.notNull(rawPassword, "明文密码不能为空");
        return PASSWORD_ENCODER.encode(rawPassword);
    }

    /**
     * 校验密码（登录时用）
     * @param rawPassword 前端传入的明文密码
     * @param encodedPassword 数据库存储的加密密码
     * @return true-密码一致，false-密码不一致
     */
    public static boolean matches(String rawPassword, String encodedPassword) {
        Assert.notNull(rawPassword, "明文密码不能为空");
        Assert.notNull(encodedPassword, "加密密码不能为空");
        return PASSWORD_ENCODER.matches(rawPassword, encodedPassword);
    }
}